package org.shj.pattern.composite;

/**
 * 组合模式使得用户对单个对象和组合对象的使用具有一致性
 * 主要解决： 它在我们树型结构的问题中，模糊了简单元素和复杂元素的概念，客户程序可以像处理简单元素
 *         一样来处理复杂元素，从而使得客户程序与复杂的内部结构解耦
 */
public class Main {

	public static void main(String[] args){
		Component root = new Composite("root");
		
		root.add(new Leaf("Leaf A"));
		root.add(new Leaf("Leaf B"));
		
		Component comp = new Composite("Composite X");
		comp.add(new Leaf("Leaf XA"));
		comp.add(new Leaf("Leaf XB"));
		root.add(comp);
		
		comp = new Composite("Composite XY");
		comp.add(new Leaf("Leaf XYA"));
		comp.add(new Leaf("Leaf XYB"));
		root.add(comp);
		
		root.add(new Leaf("Leaf C"));
		
		root.display(1);
	}
}
